#if PROGRIDS_ENABLED

using System.Reflection;
using NUnit.Framework;
using UnityEditor.ProBuilder;

static class ProGridsIntegration
{
    const BindingFlags k_BindingFlagsAll =
        BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;

    [Test]
    public static void GetProGridsType()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType());
    }

    [Test]
    public static void ProGridsActive()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("SceneToolbarActive", k_BindingFlagsAll));
    }

    [Test]
    public static void SceneToolbarIsExtended()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("SceneToolbarIsExtended", k_BindingFlagsAll));
    }

    [Test]
    public static void UseAxisConstraints()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("UseAxisConstraints", k_BindingFlagsAll));
    }

    [Test]
    public static void SnapEnabled()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("SnapEnabled", k_BindingFlagsAll));
    }

    [Test]
    public static void SnapValue()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("SnapValue", k_BindingFlagsAll));
    }

    [Test]
    public static void GetPivot()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("GetPivot", k_BindingFlagsAll));
    }

    [Test]
    public static void SubscribePushToGridEvent()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("AddPushToGridListener", k_BindingFlagsAll));
    }

    [Test]
    public static void UnsubscribePushToGridEvent()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("RemovePushToGridListener", k_BindingFlagsAll));
    }

    [Test]
    public static void OnHandleMove()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("OnHandleMove", k_BindingFlagsAll));
    }

    [Test]
    public static void SubscribeToolbarEvent()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("AddToolbarEventSubscriber", k_BindingFlagsAll));
    }

    [Test]
    public static void UnsubscribeToolbarEvent()
    {
        Assert.IsNotNull(ProGridsInterface.GetProGridsType().GetMethod("RemoveToolbarEventSubscriber", k_BindingFlagsAll));
    }
}

#endif
